主成分分析(PCA)及其在生态数据分析中的应用
主成分分析(Principal Component Analysis,PCA)是基于特征向量的线性无约束排序方法。它提供了一种数据降维技巧,能够将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分(Principal Component,PC),可用于替代原始的大量相关变量,进而简化分析过程。例如,使用PCA将20个相关的变量(其中可能存在冗余)分解为2-3个无关的主成分,并尽可能地保留原始数据集的信息,通过这2-3个主成分即可有效判断所有变量的潜在结构,以及表征对象的特征。因此在多元统计中,PCA应用非常广泛。
举个例子解释下什么是主成分分析吧,怎么样,够形象吧。
如图所示,主成分(PC1和PC2)是观测变量(X1-X6)的线性组合,形成线性组合的权重都是通过最大化各主成分所解释的方差来获得。原始的变量间可能存在潜在相关性,但特征分解后的各主成分间则不存在任何相关。
(混了4+3年生物圈后总结,生物是文科
然后,接下来的篇幅就主要是以生态学中的群落数据分析为例,对PCA的原理方法及应用等作些系统性的介绍。
首先注意一个问题,PCA原始假设要求数据符合多元正态分布。然而我们知道,生态学数据大多不是正态分布类型,因此在群落分析中,我们可能一般并不考虑严格的多元正态性假设。只要偏离正态性不太离谱,PCA对数据的正态性就不很敏感。
PCA算法的简化描述
假设存在x个对象、p个变量的矩阵(x, p ≥ 2)。
(a)将每个对象排列到多维空间中,其中每个维度代表了一个变量。这样,在多维(多变量)空间中将产生一个对象云。
(b)计算云的质心。
(c)将轴心移到该质心。
(d)旋转轴,使第一个轴以最大方差的方向穿过云,第二个轴垂直于第一个轴(与第一轴正交)并以第二最大方差的方向穿过云,依此类推。对象最终在各旋转轴上的位置即为其在各排序轴(主成分)上的得分。
如此,对于含有p个变量的矩阵,最多可以通过PCA获得p个主成分。每个主成分,或者通俗一点称为PCA(非约束)轴,都是所有描述符的线性组合,各主成分之间相互独立互不相关。
在生态学领域,通过生态数据作PCA,可用于描述生境特征,比较生境差异,探寻主要的生境标志物等。
可知,对应于多元统计所涉及的“多变量”,生态数据通常就是两种类型:环境属性或物种属性。环境属性不必多说,就是各种环境指标的测度。对于物种属性,还可继续分为两种主要类型,物种组成数据类型,如物种丰度数据;以及物种特征数据类型,如物种性状。事实上,若抛去变量的生态学属性,只关注PCA过程的话,环境属性和物种特征是可以划为一类的;而物种组成则比较特殊,这些放在下文中讨论。
然后再回到PCA算法上来。
下图展示了一个非常简单的情形,通过包含五个样方(样本)和两个物种(变量)的PCA排序,帮助我们理解PCA算法过程。更多细节,可参考Legendre和Legendre(1998)“Numerical Ecology”第九章“Ordination in reduced space”,第393页前后的内容。
再形象一点,下图展示了通过PCA,一个三维空间(即三组变量,如三种物种)中的对象降维(投影)至二维空间(即两个主成分)的情形。这回应该就很清楚,PCA降维的大致思想了吧。
PCA在生态数据中的主要应用
对于一般的数据而言,PCA主要有两个应用,考虑生态数据时同样如此。
1、探索对象规律
最常见的,就是期望通过PCA,观测对象间的相似/相异程度。例如同组对象之间是否聚集在一起,不同组之间是否能够明显区分,差异程度的大小等。
但如上所提到的,对于用于PCA的生态数据而言,环境属性和物种特征可以划为一类,而物种组成则单独归类。
对于非物种组成数据
例如,对于每个样方测得的环境变量,或对于物种测得的物种特征(性状)。由于这些变量之间的单位不一致,就环境变量而言,例如土壤pH和土壤湿度;物种特征而言,例如植物的株高和质量等;所以在数值本身上可能差异巨大。在这种情况下,需要首先将变量标准化为零均值和单位标准差,以消除量纲差异。否则,绝对值或方差较高的变量在分析中将占有非常高的权重,带来非常大的方差,严重影响降维过程。
图示数据标准化前后,PCA结果的差异。数据标准化前某些对象离散度过高,可能由高权重的变量所引起。
对于物种组成数据
对于物种组成丰度数据而言,则情况比较特殊。如果期望使用PCA实现对多维物种空间的降维处理,观测群落组成差异,或者寻找重要物种,PCA仅可适合“相对均匀”的物种组成数据。
所谓“相对均匀”,是指在数据中,沿(假设的)环境梯度的物种响应可以用线性关系描述,这样的数据应包含很少的零,且高丰度物种的比例也少,从而降低了对欧几里德距离敏感的双零问题。此时,PCA也可有效地反映样方-物种关系。
而对于“非均匀”情况,沿(假设的)环境梯度的物种响应不再是线性关系,此时数据中将存在大量的零值,且大量物种存在极端的丰度差异,通过PCA处理后,在排序图中存在很少相同物种的样方反而会相互靠近,即所谓“马蹄形效应”。这样的结论无疑是灾难性的。
究其原因,尽管我们的直接分析对象是原始定量数据,但PCA本质还是表征了对象之间的欧几里得距离。欧几里得距离属于对称距离测度,在物种数据的分析中无法很好地处理双零问题,且几里得距离还具有对“物种丰度的差异”比对“物种是否存在”更加敏感的属性,这使得它在处理包含很多0值且丰度差别很大的物种组成数据时非常糟糕。
生态学家的普遍建议,将预转化的物种组成数据(例如Hellinger转化)用作PCA的输入,可有效地将“非均匀”物种组成数据同样适用于PCA。这种通过首先对原始物种组成数据作转化后,再执行PCA的方法,也称为基于转化的PCA(Transformation-based Principal Component Analysis,tb-PCA)。不过也并非所有生态学家都赞同此举,如Peter和Lauren (2010)的报告“Does the Hellinger transformation make PCA a viable method for community ordination”(链接见文末)。
另一种更普遍被接受的方法,使用主坐标分析(Principal Coordinate Analysis,PCoA)替代PCA,通过计算样方间的定量非对称距离测度(如Bray-curtis距离),实现多维物种空间中的样方排序。PCoA本节不讨论,以后再讲。
2、描述变量结构
结果中,PCA排序可以显示出数据变化的主要维度,如果关注点集中在变量上,可能够继续通过以下几种方式进一步处理:
(1)将PCA轴上的样方得分视作“复杂变量”,其代表了与之高度相关的几个实际变量,因此可在进一步的分析中使用少数几个PCA主成分集合来代替许多实际(并可能是高度相关)的变量,用作进一步的分析。
(2)如果仍然期望使用原始变量用作下一步的分析,那么同样地,可通过PCA确定出具有代表性的几个重要变量出来。例如使用很少的主PCA轴,并从实际变量中选择与每个PCA轴最相关的一个,通过这种方式,可以将原初的大量(通常是高度相关的)变量减少为几个具有较低相关性的变量(根据定义,各PCA轴彼此不相关)。或者,每个主 PCA轴对应少数多个变量,尽管此时选择的变量间可能会存在高度共线性问题,但不可否认这些变量都是高贡献的。
(3)对于变量间的“相似性”,可以通过计算变量之间的相关矩阵,并进行聚类来获得高度相关的变量组。或者,直接在II型标尺PCA图中观测(见下文)。
(4)寻找重要的变量,除了通过建立变量与主PCA轴的相关性作选择外,还可通过“平衡贡献圈”作判断(见下文)。
关于主成分的选择
各个主成分轴上的特征值代表了该轴承载的方差量,通过将该轴的特征值除以所有轴的总方差和,所得比例即为该轴所解释的方差比例。也就是常在文献中见到的,PCA排序轴上通常会标注类似于“PC1: 53.1%”、“PC2: 31.2%”的特征主成分(轴)解释量,就是这么得来的。
因此一般来讲,如果很少的主轴(例如,第1轴和第2轴,记为PC1和PC2,分别对应第1主成分和第2主成分)即承载了大部分的方差,或者说解释了大部分差异,则表明通过PCA分析该数据是“合理”的。我们在后续描述数据特征时,只需通过这些主成分的特征即可有效表征原初数据的结构。
那么,选择哪些轴作为观测是合适的?
首先可以绘制排序图,观测对象是否在主要的排序轴(如前2-3轴)中具有明显的分布特征,例如同组类型的聚集,不同组类型的分散,或者对象分布恰好与某些变量值的增减趋势相一致(如时间序列、化学物质浓度梯度、关键物种丰度等)。这些特征也往往是我们作降维排序所期望发掘的现象。
其次选择的轴的解释量最好不要太低。可以通过柱形图由高到低展示所有的特征值,然后做个评判,例如结合断棍模型等,低特征值的轴尽可能就不要取了。注意PCA不是统计检验,而是探索性分析方法,因此这里对于排序轴的取舍也只是一种建议,保留多少个排序轴并没有统一的标准。比方说下图显示第3轴的特征值偏低,不建议选取,但若我们观测到对象在第3轴中具有某种明显的规律,而且第三轴的解释率也没有特别不可观(比方说还是有百分之几的),此时可以不听从它的建议……
排序图
排序图的常见表示方式
对于排序对象和变量的相互关系,最终通过排序图直观呈现。通常会选择前2-3个特征值较高且趋势明显的主成分,并表示为二维/三维散点图的样式,它们在反映数据整体特征上具有很高的代表性。其他情况下,例如第二轴的趋势不明显,第一、三轴明显,此时不妨跳过第二轴,使用二维点图对第一、三轴可视化。极少情况下,也会选择使用两个二维点图,分别展示并解释第一、二和三、四轴等。(注:下图经过处理)
有一点需要切记,就是不要试图解释太多的轴,太多的生态维度反而意义不大,正如McCune和Grace(2002)所说:“Very few ecologists have dared to venture into the uncertain waters of four or more dimensions”。并且,排位偏后的主成分轴通常仅具有很低的特征值,也不建议选择。
大多数PCA分析,仅关注对象间的关系,因此PCA排序图中也只展示了对象,排序对象直接在对应坐标处绘制为点。对象之间的差异程度,通过点和点之间的距离反映出来。
如果同时在图中展示了排序对象和变量,则此时的排序图可称为双序图(bioplots)。排序对象仍然直接在对应坐标处绘制为点。变量则呈现为向量,由原点(0,0)起始,指向变量得分的对应坐标处,向量的方向表示了该变量数值增加的方向。虽然也可以将变量在顶点坐标处直接展示为点(而非箭头形式),但考虑到它们可能会与对象坐标点混淆,因此一般不推荐这样表示。
在双序图中,通过将对象点垂直投影到变量向量上,通过比较交点相对于向量方向的位置,即可反映变量在对象内的数值大小信息。
I型标尺与II型标尺
然而,对于对象-对象之间、以及变量-变量之间关系的描述,由于没有任何一种方法可以在同一个双序图中同时展示对象和变量的关系,因此存在两种标尺(scaling)选择。
如果主要目的是解释对象之间的关系,则可将PCA排序图执行I型缩放,即I型标尺(scaling 1)-距离双序图(distance bioplot)。特征向量被标准化为单位长度,关注的是对象之间的关系。双序图中对象之间的距离近似于多维空间内的欧式距离,代表变量箭头之间的角度没有意义。
变量之间的相关性是通过变量向量之间的角度,而非向量顶点之间的距离来描述的。若期望关注变量间的相关性,需将PCA排序图执行II型缩放,即II型标尺(scaling 2)-相关双序图(correlation bioplot)。特征向量被标准化为特征根的平方根,关注的是变量之间的关系。双序图中对象之间的距离不再近似于多维空间内的欧式距离,代表变量箭头之间的夹角反映变量之间的相关性。
例如,对象是样方、变量是物种时,分别通过两种类型的标尺展示样方间距离或者物种间相关性。
关于平衡贡献圈
I型标尺的双序图中,可以通过平衡贡献圈(circle of equilibrium contribution)评估变量的相对重要性。平衡贡献圈半径为(d/p)1/2,其中d是所展示的PCA轴数(通常d = 2),p是变量个数,可知半径长度是一开始便定义好的固有特征。平衡贡献圈的半径代表变量的向量长度对排序的平均贡献率。如果某个变量的箭头长度大于圆的半径,代表它对这个排序空间的贡献大于所有变量的平均贡献。
图注:在前两个PCA主轴中展示了15个变量向量,平衡贡献圈的半径为(2/15)1/2 = 0.365。右下方插图中,对于变量向量仅展示了顶点坐标(而非箭头形式),这种样式虽然也是在文献偶尔能看到的,但一般不推荐使用,因为它们可能会与对象坐标点混淆。
参考资料
DanielBorcard, FranoisGillet, PierreLegendre, et al. 数量生态学:R语言的应用(赖江山 译). 高等教育出版社, 2014.
Jari Oksanen1. Multivariate Analysis in Ecology - Lecture Notes -. 2004
Legendre P, Legendre L. Numerical Ecology. Second English edition. Developments in Environmental Modelling, 1998, 20, Elsevier
Mccune B P, Grace J B. Analysis of Ecological Communities. Journal of Experimental Marine Biology and Ecology, 2002, 289(2).
David Zeleny博士:https://www.davidzeleny.net/anadat-r/doku.php/en:pca
Peter和Lauren博士:https://eco.confex.com/eco/2010/techprogram/P24489.HTM
R包circlize绘制弦状图示例(多组分信息样式,从头绘制)